/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import dominio.Usuario;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;

/**
 *
 * @author User
 */
public class PersistenciaUsuario {

    ArrayList<Usuario> registros = new ArrayList<Usuario>();

        /**
         * 
         * @param nome
         * @param senha
         * @return
         */

        public static boolean login(String nome,String senha) {
                ResultSet rs;
                
                try {
                        Statement statement = Conecta.getConnection().conn.createStatement();
                        rs = statement.executeQuery("SELECT * FROM Users WHERE nome='"+nome+"'");
                        if (rs.next()){
                                        if(rs.getString("senha").equals(senha)){
                                             //   imprimir no arquivo log
                                           // logInformacoes(nome);
                                                return true;
                                        }
                                        else{
                                                System.out.println("senha incorreta");//senha incorreta
                                                return false;
                                        }
                        }
                        else{
                              System.out.println("usuario nao existe"); //usuario nao existe
                            return false;
                        }
                } catch (SQLException e) {
                    System.out.println("Erro em Login!");
                        //Log.getLoginstance(null).error(e.getMessage());
                        //imprime no arquivo
                        return false;
                }
        }
        /**
         *
         * @param nome
         * @param senha
         * @return
         */

        public static boolean cadastroUsuario(String nome, String senha){
                ResultSet rs;
                try {
                        Statement statement = Conecta.getConnection().conn.createStatement();
                        rs = statement.executeQuery("SELECT * FROM Users WHERE nome='"+nome+"'");
                        if (rs.next()){
                                //Log.getLoginstance(null).error("Tentativa de cadastro de usuário já existente "+username);
                                //erro = cadastro ja existe -> imprime no log
                                return false;
                        }
                        statement.executeUpdate("INSERT INTO Users (nome,senha) values ('"+nome+"','"+senha+"')");
                      //  Log.getLoginstance(null).info("Usuário "+name+" de login "+username+" cadastrado com sucesso");
                        return true;
                } catch (SQLException e) {
                    System.out.println("Erro em cadastrar usuario");
                    //    Log.getLoginstance(null).error(e.getMessage());
                        return false;
                }
        }

        public static boolean AlteraSenha(String nome,String senhaAntiga,String senhaNova) {
          
                ResultSet rs;
                try {
                        Statement statement = Conecta.getConnection().conn.createStatement();
                        rs = statement.executeQuery("SELECT * FROM Users WHERE nome='"+nome+"'");
                        if (rs.next()){
                                if (rs.getString("senha").equals(processa(senhaAntiga))){
                                        statement.executeUpdate("UPDATE Usuario SET passwd ='"+processa(senhaNova)+"' WHERE nome='"+nome+"'");
                                        //.getLoginstance(null).info("Senha do usuário "+username+" modificada com sucesso");
                                        return true;
                                }
                                else{
                                       // throw new PasswordsDontMatchException(oldPasswd);
                                        return false;
                                }
                        }
                        else{
                                //throw new UserNotFoundException(username);
                            return false;
                        }
                } catch (SQLException e) {
                    System.out.println("Erro em alterar senha");
                        //Log.getLoginstance(null).error(e.getMessage());
                        return false;
                }
        }
        /**
         *
         * @param senha
         * @return
         */
        public static String processa(String senha){
            System.out.println("processa seenha    "+senha);
                String sen = "";
                MessageDigest md = null;
                try {
                        md = MessageDigest.getInstance("SHA-1");
                } catch (NoSuchAlgorithmException e) {
                    System.out.println("Erro em processar senha");
                      //  Log.getLoginstance(null).error(e.getMessage());
                }
                BigInteger hash = new BigInteger(1, md.digest(senha.getBytes()));
                sen = hash.toString(16);   
                return sen;
        }
        /*guarda registros de login*/
        public void logInformacoes(String nome){
                String nUsuario, cpfUsuario;
                ResultSet result;
                try {
               //MAIS OU MENOS ISSO. AINDA NAO FINALIZADO
               //INCLUIR CPF A USUARIO
                        Statement statement = Conecta.getConnection().conn.createStatement();
                        result = statement.executeQuery("SELECT * FROM Users WHERE nome='"+nome+"'");
                        if (result.next()){
                            nUsuario = result.getString("nome");
                            cpfUsuario = result.getString("cpf");
                            System.out.println(nUsuario+" Logou-se. Cpf do usuario"+cpfUsuario);
                           // this.registros.add(nome);
                        }
            } catch (SQLException ex) {
            }
                
        }
            
}
